﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ERP.Domain.Scheduling
{
    /// <summary>
    /// 排班表实体类
    /// </summary>
    public class Schedule : Audit
    {
        /// <summary>
        /// 排班ID（主键，若数据库中是自增列，可添加自增配置）
        /// </summary>
        [Key]
        [Column("ScheduleId")]
        public int ScheduleId { get; set; }

        /// <summary>
        /// 关联班组表ID（外键，关联班组表的TeamId）
        /// </summary>
        [Column("TeamId")]
        public int TeamId { get; set; }

        /// <summary>
        /// 关联班次表ID（外键，关联班次表的ShiftId）
        /// </summary>
        [Column("ShiftId")]
        public int ShiftId { get; set; }

        /// <summary>
        /// 排班日期
        /// </summary>
        [Column("ScheduleDate")]
        public DateTime ScheduleDate { get; set; }

        /// <summary>
        /// 是否加急排班
        /// </summary>
        [Column("IsUrgentSchedule")]
        public bool IsUrgentSchedule { get; set; }

        /// <summary>
        /// 是否加急订单
        /// </summary>
        [Column("IsUrgentOrder")]
        public bool IsUrgentOrder { get; set; }

        /// <summary>
        /// 关联生产日历ID（外键，关联生产日历表的主键）
        /// </summary>
        [Column("CalenDarId")]
        public int CalenDarId { get; set; }

        /// <summary>
        /// 逻辑删除标识符
        /// </summary>
        public bool? IsDelete { get; set; } = false;

        // 若使用 EF Core，可添加导航属性，示例：
        // public virtual Team Team { get; set; } // 关联班组实体
        // public virtual Shift Shift { get; set; } // 关联班次实体
        // public virtual Calendar Calendar { get; set; } // 关联生产日历实体
    }
}
